Ten przewodnik zawiera praktyczne podejście do implementacji aplikacji z wykorzystaniem wywoływania funkcji w Gemme. Dzięki starannemu opracowaniu promptów tę technikę można stosować do różnych wersji modelu Gemma. Więcej informacji znajdziesz w artykule Beyond the Chatbot: Agentic AI with Gemma.
Wywołania funkcji
Typowa struktura wywoływania funkcji obejmuje kilka kluczowych komponentów, które umożliwiają Gemma interakcję z zewnętrznymi narzędziami lub interfejsami API.
Opisywanie narzędzi
Powiedz modelowi, z jakich „narzędzi” (czyli funkcji) może korzystać. Obejmuje to m.in.:- Co robi narzędzie (opis)
- Jakich informacji potrzebuje narzędzie (parametry)
Użytkownik zadaje pytanie
Użytkownik zadaje modelowi pytanie lub zleca mu zadanie.Gemma decyduje
Model sprawdza, czy potrzebuje narzędzia do udzielenia odpowiedzi na Twoje pytanie.Gemma prosi o narzędzie
Jeśli narzędzie jest potrzebne, Gemma wygeneruje kod z kodem narzędzia.Narzędzie wykonuje swoje zadanie
Narzędzie (funkcja) pobiera informacje z modelu i wykonuje swoje zadanie.Narzędzie zwraca wyniki
Gemma oczekuje wyniku zawiniętego w ramach zmiennej ```tool_output```.Gemma podaje ostateczną odpowiedź
Model korzysta z wyników narzędzia, aby utworzyć dla Ciebie pełną i dokładną odpowiedź.
Pomocne wskazówki
- Schemat JSON: użycie schematu JSON do definiowania parametrów, choć nie jest to wymagane, zapewnia spójną strukturę i automatyczną walidację.
- Jasne zrozumienie: jakość opisu funkcji jest kluczowa, aby model mógł prawidłowo określić, kiedy jej użyć.
- Obsługa błędów: niezawodna obsługa błędów jest niezbędna do zarządzania sytuacjami, w których wywołanie funkcji kończy się niepowodzeniem lub zwraca nieoczekiwane wyniki.
- Proces iteracyjny: czasami między modelem a wywołaniami funkcji dochodzi do wielu tur konwersacji.
Przykładowe prompty i dane wyjściowe
Kod tej aplikacji znajdziesz w repozytorium kodu Gemma Cookbook.
Krok 1 i 2. Opisz narzędzie i wyznacz zadanie
Dane wejściowe: śmieszny obraz kota
Tekst:
If you decide to invoke any of the function(s), it should be wrapped with ```tool_code```.
You have access to the following tools.
* `generate_meme(image, top_text, middle_text, bottom_text)`: Generate a meme with the given parameters
Make a funny meme with this. "meme.jpg"
Krok 3. Gemma podejmuje decyzję i prosi o pomoc
Ten prompt zwróci taką odpowiedź:
Okay, here's a funny meme based on the image of the surprised cat: ```tool_code generate_meme(image="meme.jpg", top_text="Me when I hear a creak", middle_text="Is it safe?", bottom_text="Probably not.") ```
Krok 4. Narzędzie wykonuje swoje zadanie
Przetwarzanie danych wyjściowych modelu polega na znajdowaniu bloków kodu, analizowaniu argumentów funkcji i wykonaniu funkcji.